在 NumPy 中, 精度管理 是指有意识地选择位深度,以在内存效率和数值正确性之间取得平衡。与具有任意精度的标准 Python 整数不同,NumPy 使用固定大小的 C 类型(例如, int32_t, uint64_t)。
1. 数据类型层级
NumPy 的 dtype 定义了内存占用。虽然 np.int_() 提供平台相关的尺寸,但稳健的系统依赖于 固定大小别名 (见第 34 页表格)来确保跨硬件的一致性。
- 整数:
int8_t,int16_t,int32_t,int64_t。 - 无符号整数:
uint8_t到uint64_t。 - 指针:
intptr_t,uintptr_t。
2. 检查工具
在执行算术运算之前,使用 np.iinfo() 和 np.finfo() 来检查取值范围。例如, 1 + np.finfo(np.longdouble).eps 可识别机器精度——即加法不再改变数值的阈值。
3. 溢出机制
NumPy 在发生溢出时不会抛出错误;而是静默失败。使用 np.power(100, 8, dtype=np.int32) 会导致截断,而 float64 则会转换为 inf。使用 np.issubdtype(d, np.floating) 在操作前验证数据类型类别。
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>